Skip to content

feat: iOS glass tiers for buttons and filter chips - #9

Open
xFlaviews wants to merge 13 commits into
mainfrom
feat/glass-primary-button
Open

feat: iOS glass tiers for buttons and filter chips#9
xFlaviews wants to merge 13 commits into
mainfrom
feat/glass-primary-button

Conversation

@xFlaviews

Copy link
Copy Markdown
Contributor

Summary

iOS-only glass design language for LuckyButton and LuckyFilter, per the Waveful glass spec (validated by cross-platform research: Apple HIG/Liquid Glass, RN ecosystem, Flutter perf):

  • lib/effects/lucky_glass.dart — shared primitives: GlassRimPainter (1px top-weighted specular rim), luckyGlassFilter() (blur σ8 composed with 1.4x saturation), tier constants, LuckyGlassSurface with the canonical layer order (rim OUTSIDE clip → blur → fill), and the blur-budget policy doc (max 1 steady-state BackdropFilter per screen, none in scrollables).
  • LuckyButton — glass tiers on iOS: primary = primaryColor 0.44 (0.60 light) + white rim; secondary/ghost = translucent n200 + theme-aware rim, no blur. Legacy solid styles preserved byte-identical on other platforms, high-contrast, and disabled. New optional child param for custom pill content.
  • LuckyFilter — unselected chips get the ghost tier (no blur; they live in scrollable rows).
  • Toast/sheet/modal/tab-bar/navbar glass was implemented and then reverted in-branch after visual review — scope is deliberately buttons+chips only. Squash-merge recommended.
  • Drops the package_api_docs lint (removed in Dart 3.7).

Consumed by waveful_app branch feat/explore-island-cards (pinned to d99e70c); re-pin follows the squash-merge.

🤖 Generated with Claude Code

xFlaviews and others added 13 commits July 9, 2026 23:29
…ainter, saturated glassmorphism blur, custom child support
…r, saturation filter, tier constants, LuckyGlassSurface, blur-budget policy); button imports from it
…); icon-button cluster doc — no surface to paint
…— filter fully unmounts at rest per blur-budget policy
…iOS) — draggable/embedded variants untouched (phase 2)
…(iOS) — defaults byte-identical; navbar .glass gated on app extendBody audit
…-screen stays opaque, barrier at kGlassBarrierAlpha
…) — full-screen stays opaque, barrier at kGlassBarrierAlpha"

This reverts commit 952fbbf.
…) path (iOS) — draggable/embedded variants untouched (phase 2)"

This reverts commit 8d041ae.
…r (iOS) — filter fully unmounts at rest per blur-budget policy"

This reverts commit fedaee5.
…e modes (iOS) — defaults byte-identical; navbar .glass gated on app extendBody audit"

This reverts commit 5c149ed.
Glass primary rendered a translucent primaryColor tint (alpha 0.60) on
iOS light backgrounds, which washed the CTA out instead of reading as the
default lucky blue. Light mode now fills solid primaryColor and drops the
specular rim (a white gloss over solid blue reads as glass again). Dark
mode keeps the 0.44 glass tint and rim unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant